#!/usr/bin/env node

//node cli 应用入口文件必须有这样的文件头
// 如果在 linux或者macOS系统下还需要修改此文件的读写权限
// 具体就是通过 chmod 755 cli.js 实现

// 脚手架的工作过程：
//1. 通过命令行交互询问用户问题
//2. 根据用户回答的结果生成文件 
//以上两步需要用到inquirer 模块
//3. 根据模板生成项目文件

const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')
const ejs = require('ejs')

inquirer.prompt([
  {
    type: 'input',
    name: 'name',
    message: 'Project name?'
  }
]).then(anwser => {
  console.log('anwser', anwser);
  //根据用户回答结果生成文件
  //明确模板目录和目标目录
  //模板路径
  const tmplDir = path.join(__dirname, 'templates')
  //目标路径,process.cwd()当前执行文件的路径
  const destDir = process.cwd()

  //将模板文件全部复制到目标目录
  fs.readdir(tmplDir, (err, files) => {
    if (err) throw err
    //files 是相对于模板的相对路径，通过模板引擎渲染相对路径文件，比如使用ejs
    files.forEach(file => {
      //通过模板引擎渲染文件
      ejs.renderFile(path.join(tmplDir, file), anwser, (err, result) => {
        if (err) throw err
        console.log(result)
        //将结果写入目标文件路径
        fs.writeFileSync(path.join(destDir, file), result)
      })
    })
  })

})